package com.wenli.graduate2022.wenliGreenShop.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wenli.graduate2022.wenliGreenShop.entity.Product;
import com.wenli.graduate2022.wenliGreenShop.service.servDao.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author HuangHai
 * @date 2021/10/6 16:09
 */
@RestController
public class ProductController {

    @Autowired
    ProductService productService;

    //查询所有产品
    @GetMapping("product")
    public List<Product> findAll() {
        System.out.println("查询所有方法运行");
        return productService.findAll();
    }

    @GetMapping("/product/findByCategoryId/{id}")
    public List<Product> findProductsByCategoryId(@PathVariable("id") String id) {
        System.out.println("查询某个产品方法运行");
        return productService.findProductsByCategoryId(Integer.parseInt(id));
    }



    /**
     * 这里的IPage类与Page类都是mybatisPlus给我们自动生成的，只要输入当前页面数与该页面的数据条数，他就会自动帮我们算出需要的数据返回给我们
     * 分页查询产品
     *
     * @param page
     * @param size
     * @return
     */
    @GetMapping("/product/{page}/{size}")
    public IPage<Product> findByPage(@PathVariable("page") Integer page, @PathVariable("size") Integer size) {
        Page<Product> productPage = new Page<Product>(page, size);
        IPage<Product> productIPage = productService.findByPage(productPage);
        System.out.println("打印页面：" + productPage.toString());
        System.out.println("分页查询所有产品：" + productIPage.toString());
        return productIPage;
    }

    @GetMapping("/product/{id}")
    public Product findById(@PathVariable("id") Integer id) {
        System.out.println("查询某个产品方法运行");
        return productService.findById(id);
    }

    @PostMapping("/product")
    public int insert(@RequestBody Product product){
        //如果插入成功就返回刚刚插入数据生成的id，否则返回0
        return productService.insert(product)==0 ? 0 : productService.selectLastInsertId();
    }

    @PutMapping("/product")
    public int update(@RequestBody Product product){
        System.out.println("修改方法运行");
        return productService.update(product);
    }

    @DeleteMapping("/product/{id}")
    public int delete(@PathVariable("id") Integer id){
        System.out.println("删除方法运行");
        return productService.delete(id);
    }

    @GetMapping("/productByName/{name}/{page}/{size}")  //这里字符串也可以用restful风格
    public IPage<Product> findByName(@PathVariable("page") Integer page,@PathVariable("size") Integer size,@PathVariable("name") String name){
        Page<Product> productPage = new Page<Product>(page, size);
        System.out.println("模糊查询方法运行");
        return productService.findByName(productPage,name);

    }


}
